/********************************************************************
	Copyright (C) 2006-2008 Lensow
	http://www.lensow.com
	Created:	2008/06/07   10:19
	Filename: 	x:\Lensow\Loplayer\src\libcore\IGraphBuilder2.h
	Author:		Dean
	
	Purpose:	
*********************************************************************/

#ifndef IGraphBuilder2_h__
#define IGraphBuilder2_h__
#pragma once


MIDL_INTERFACE("3acae1b1-a40d-4d6a-8aeb-325f16643585")
IGraphBuilder2 : public IFilterGraph2
{
	STDMETHOD(IsPinDirection) (IPin* pPin, PIN_DIRECTION dir) PURE;
	STDMETHOD(IsPinConnected) (IPin* pPin) PURE;
	STDMETHOD(ConnectFilter) (IBaseFilter* pBF, IPin* pPinIn) PURE;
	STDMETHOD(ConnectFilter) (IPin* pPinOut, IBaseFilter* pBF) PURE;
	STDMETHOD(ConnectFilterDirect) (IPin* pPinOut, IBaseFilter* pBF, const AM_MEDIA_TYPE* pmt) PURE;
	STDMETHOD(NukeDownstream) (IUnknown* pUnk) PURE;
	STDMETHOD(FindInterface) (REFIID iid, void** ppv, BOOL bRemove) PURE;
	STDMETHOD(AddToROT) () PURE;
	STDMETHOD(RemoveFromROT) () PURE;
};

// private use only
MIDL_INTERFACE("c903c980-4d08-4801-adff-443d91a9f6de")
IGraphBuilderDeadEnd : public IUnknown
{
	STDMETHOD_(size_t, GetCount)() PURE;
	STDMETHOD(GetDeadEnd) (int iIndex, CAtlList<CStringW>& path, CAtlList<CMediaType>& mts) PURE;
};

enum engine_t {DirectShow = 0, RealMedia, QuickTime, ShockWave};

MIDL_INTERFACE("8e3e771d-fd05-437e-92ab-a2d32e01f090")
IGraphEngine : public IUnknown
{
	STDMETHOD_(engine_t, GetEngine) () PURE;
};

// {a57f560a-c4f9-466d-8a53-78790249b78d} 
DEFINE_GUID(LOPCSIDL_FGManagerPlayer, 
0xa57f560a, 0xc4f9, 0x466d, 0x8a, 0x53, 0x78, 0x79, 0x02, 0x49, 0xb7, 0x8d);

// {5614bec6-e5f5-484b-a5e5-84d61828e6c4} 
DEFINE_GUID(LOPCSIDL_FGManagerDVD, 
0x5614bec6, 0xe5f5, 0x484b, 0xa5, 0xe5, 0x84, 0xd6, 0x18, 0x28, 0xe6, 0xc4);

// {4cf03d1c-d620-4524-adc3-161c302cebb0} 
DEFINE_GUID(LOPCSIDL_FGManagerCapture, 
0x4cf03d1c, 0xd620, 0x4524, 0xad, 0xc3, 0x16, 0x1c, 0x30, 0x2c, 0xeb, 0xb0);

// {7a4a415f-f3a5-4ccd-9fad-548dcae02da7} 
DEFINE_GUID(LOPCSIDL_RealMediaGraph, 
0x7a4a415f, 0xf3a5, 0x4ccd, 0x9f, 0xad, 0x54, 0x8d, 0xca, 0xe0, 0x2d, 0xa7);

// {95c871c7-29b2-4a93-9cfd-ed97306ed10f} 
DEFINE_GUID(LOPCSIDL_ShockwaveGraph, 
0x95c871c7, 0x29b2, 0x4a93, 0x9c, 0xfd, 0xed, 0x97, 0x30, 0x6e, 0xd1, 0x0f);

// {30b8d875-6750-4162-82b0-e503a19b89b0} 
DEFINE_GUID(LOPCSIDL_QuicktimeGraph, 
0x30b8d875, 0x6750, 0x4162, 0x82, 0xb0, 0xe5, 0x03, 0xa1, 0x9b, 0x89, 0xb0);

#endif // IGraphBuilder2_h__
